package main

import (
	"database/sql"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"time"
)

//UserInfo-->数据表
type User struct {
	gorm.Model   //内嵌Model struct  包含四个字段
	Name         string
	Age          sql.NullInt64 `gorm:"column:user_age"` //零值类型
	Birthday     *time.Time
	Email        string  `gorm:"type:varchar(100);unique_index"`
	Role         string  `gorm:"size:255"`        // 设置字段大小为255
	MemberNumber *string `gorm:"unique;not null"` // 设置会员号（member number）唯一并且不为空
	Num          int     `gorm:"AUTO_INCREMENT"`  // 设置 num 为自增类型
	Address      string  `gorm:"index:addr"`      // 给address字段创建名为addr的索引
	IgnoreMe     int     `gorm:"-"`               // 忽略本字段
}

// 使用`AnimalID`作为主键
type Animal struct {
	AnimalID int64 `gorm:"primary_key"`
	Name     string
	Age      int64
}

type UserInfo struct {
	gorm.Model
	Name   string
	Gender string
	Hobby  string
}

//函数指定命名,唯一指定表明
func (Animal) TableName() string {
	return "q1mi"
}
func main() {
	//GORM还支持更改默认表名称规则：
	gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
		return "SMS_" + defaultTableName
	}
	//连接mysql数据库
	db, err := gorm.Open("mysql", "root:123456@(127.0.0.1)/db1?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		panic(err)
	}
	defer db.Close()
	db.SingularTable(true) //禁用复数

	//创建表  自动迁移（把结构体和数据表进行对应）
	db.AutoMigrate(&User{})
	db.AutoMigrate(&Animal{})
	//使用User结构体创建名叫xiaowangzi 的表
	db.Table("xiaowangzi").CreateTable(&User{})

	//创建数据行
	db.AutoMigrate(&UserInfo{})
	u1 := UserInfo{Name: "zjd", Gender: "男", Hobby: "蛙泳"}
	u2 := UserInfo{Name: "沙河娜扎", Gender: "女", Hobby: "足球"}
	db.Create(&u1)
	db.Create(&u2)
	//
	//
	////查询
	//var u UserInfo
	//db.First(&u) //查询表中第一条数据
	//fmt.Printf("u:%#v \n",u)
	//

	//更新
	//db.Model(&u).Update("hobby","双色球")

	//删除
	//db.Delete(&u)
}
